package com.hd123.rumba.gwt.widget2e.client.dialog;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.hd123.rumba.gwt.widget2.client.grid.RPageData;

/**
 * {@link RBrowserDialog}的回调
 * 
 * @author LiQi
 * 
 */
public interface RBrowserCallback {

  /**
   * 执行RPC调用获得数据集，数据集应为RPageData类型
   * 
   * @param page
   *          当前页序号，从0计数
   * @param pageSize
   *          每页记录数
   * @param sortField
   *          排序列，如果列上定义了数据字典，则为该列的数据字典中的字段名，否则为列标题。没有排序时为null。
   * @param sortDir
   *          排序方向，取值范围为RGrid.SORT_ASC和RGrid.SORT_DESC。没有排序时为null。
   * @param callback
   *          实现类应把callback作为RPC调用的回调
   */
  void fetchData(int page, int pageSize, String sortField, String sortDir,
      AsyncCallback<RPageData> callback);

  /**
   * 在表格中展示数据时触发
   * 
   * @param data
   *          包含当前行原始数据的对象
   * @param col
   *          表格列序号，不包含选择器列，从0计数，和
   *          {@link RBrowserDialog#getColumnCaptions()}的顺序对应。
   * @return 显示在表格中的字符串
   */
  String displayData(Object data, int col);

  /**
   * 用户选择一行后触发
   * 
   * @param object
   *          选中行对应的对象
   */
  void onSelected(Object object);
}
